package com.ruoyi.system.mapper;

import com.ruoyi.system.domain.CollectionAmount;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 馆藏量统计 Mapper 接口
 * 提供数据库操作方法，包括增删改查、批量保存
 *
 * @author [你的名字或团队名]
 */
@Mapper
public interface CollectionAmountMapper {
    /**
     * 查询馆藏量统计列表，支持按名称、年份等条件筛选
     *
     * @param collectionAmount 查询条件封装
     * @return 馆藏量统计信息列表
     */
    List<CollectionAmount> selectCollectionAmountList(CollectionAmount collectionAmount);

    /**
     * 根据主键ID查询馆藏量统计详情
     *
     * @param id 主键ID
     * @return 馆藏量统计信息
     */
    CollectionAmount selectCollectionAmountById(Long id);

    /**
     * 新增馆藏量统计记录
     *
     * @param collectionAmount 要新增的数据
     * @return 影响行数，1 表示成功
     */
    int insertCollectionAmount(CollectionAmount collectionAmount);

    /**
     * 修改馆藏量统计记录
     *
     * @param collectionAmount 要修改的数据（需包含ID）
     * @return 影响行数，1 表示成功
     */
    int updateCollectionAmount(CollectionAmount collectionAmount);

    /**
     * 根据主键ID删除单条馆藏量统计记录
     *
     * @param id 主键ID
     * @return 影响行数，1 表示成功
     */
    int deleteCollectionAmountById(Long id);

    /**
     * 批量删除馆藏量统计记录
     *
     * @param ids 要删除的主键ID数组
     * @return 影响行数，等于成功删除的记录数
     */
    int deleteCollectionAmountByIds(Long[] ids);

    /**
     * 批量插入馆藏量统计数据（用于批量保存，先删后插场景）
     *
     * @param list 要插入的数据列表
     * @return 影响行数，等于成功插入的记录数
     */
    int batchInsertCollectionAmount(@Param("list") List<CollectionAmount> list);

    void deleteAll();
}